package org.fastsyncer.manager.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public abstract class FileUtil {

    public static boolean write(String filename, String data, boolean append) {
        FileWriter writer = null;
        try {
            // 保存文件内容
            writer = new FileWriter(filename, append);
            if (writer != null) {
                writer.write(data);
            }
        } catch (Exception e) {
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                }
            }
        }
        return true;
    }

    public static void delete(File source) {
        if(null != source && source.exists()){
            source.delete();
        }
    }
    
    /**
     * 递归删除目录下的所有文件及子目录下所有文件
     * 
     * @param dir
     *            将要删除的文件目录
     * @return boolean 如果返回true说明目录已被成功删除，如果false,这个方法还会尝试继续删除。
     */
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            // 递归删除目录中的子目录下
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        // 目录此时为空，可以删除
        return dir.delete();
    }

    public static void createFileIfNotExist(String fileName) {
        try {
            File file = new File(fileName);
            if (!file.exists()) {
                file.createNewFile();
            }
        } catch (IOException e) {
        }
    }

    public static void createDirIfNotExist(String fileDir) {
        if (fileDir == null || fileDir == "") {
            return;
        }

        // 检查文件夹是否创建
        File file = new File(fileDir);
        if (!file.exists()) {
            file.mkdirs();
        }
    }
    
    public static void renameTo(File source, File dest) {
        if(null != source && null != dest){
            source.renameTo(dest);
        }
    }
    
}